﻿using System;
using System.IO;
using System.ServiceProcess;
using log4net;
using Reactor.Providers;
using Reactor.ServiceGrid.FileSystem;
using Reactor.ServiceGrid.Packages;
using Reactor.ServiceGrid.Repositories;
using Samurai.Wakizashi.Workflow;

namespace Reactor.ServiceGrid.Workflows.Contexts
{
    public class ServiceCommandContext : IWorkflowContext
    {
        public IPackageRepository SourceRepository { get; set; }
        public ServiceIdentifier ServiceIdentifier { get; set; }
        public ServiceIdentifier XFerToCore { get; set; }
        public Guid ServiceInstanceIdentifier { get; set; }
        public IPackage ServicePackage { get; set; }
        public PhysicalFileSystem ServiceInstallFileSystem { get; set; }
        public string ExecutablePath { get; set; }
        public string ConfigurationFilePath { get; set; }
        public ICoreDataProvider CoreDataProvider { get; set; }
        public ServiceController WindowsServiceController { get; set; }
        public string WindowsServiceName { get; set; }
        public ILog Logger { get; set; }
        public DirectoryInfo ServiceInstallDirectory { get; set; }
    }
}
